package com.taxi.action;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.interceptor.ServletRequestAware;

import com.opensymphony.xwork2.ActionSupport;
import com.taxi.bean.ChoferBean;
import com.taxi.bean.DisponibilidadBean;
import com.taxi.bean.EmpresaBean;
import com.taxi.service.ChoferService;
import com.taxi.service.DisponibilidadService;
import com.taxi.service.GestionUsuarioBusinessDelegate;
import com.taxi.service.PaqueteBusinessDelegate;

public class DisponibilidadAction extends ActionSupport implements ServletRequestAware {

	private static final long serialVersionUID = 1L;
	
	private DisponibilidadService disponibilidadService= GestionUsuarioBusinessDelegate.getDisponibilidadService();
	private ChoferService choferService = PaqueteBusinessDelegate.getChoferService();
	private HttpServletRequest request;
	private List<EmpresaBean> empresas;
	private EmpresaBean empresa;
	private ChoferBean chofer;
	private ChoferBean chofer2;
	private DisponibilidadBean disponibilidad;
	private List<ChoferBean> choferes;
	private List<DisponibilidadBean> disponibilidades;
	private int id;
	private boolean success;
	private String msg;
	
	 
	public void setServletRequest(HttpServletRequest request) {
		this.request = request;
	}
	
	public String listarEmpresas() throws Exception{		
		
		
		try{
			empresas = 	disponibilidadService.listarEmpresas();	
			setSuccess(true);
		} catch(Exception ex ){
			ex.printStackTrace();
			setSuccess(false);	
		}
		
		return SUCCESS;
	}
	
	
	public String buscarChoferesPorCodigo() throws Exception{
		
		int codigo = Integer.parseInt(this.request.getParameter("mxi"));
		
		try{		
			choferes = disponibilidadService.listarChoferPorCodigo(codigo);
			
			setSuccess(true);	
			
		} catch(Exception e ){
			e.printStackTrace();
			setSuccess(false);	
		}
				
		return SUCCESS;		
	}
	
	public String obtenerPlacaPorChofer() throws Exception{
		
		System.out.println(this.request.getParameter("varAdd"));
		
		try{	
			chofer2 = choferService.obtenerPlacaPorChofer(1);
			setSuccess(true);	
		} catch(Exception e ){
			e.printStackTrace();
			setSuccess(false);	
		}
		// this.buscarChoferesPorCodigo();
		// this.listarEmpresas();
		
		return SUCCESS;
	}
	
	public String registrarDisponibilidad(){
		
		disponibilidad = new DisponibilidadBean();
		chofer = new ChoferBean();
		chofer.setCodigo(Integer.parseInt(this.request.getParameter("choferVar")));
		
		disponibilidad.setChofer(chofer);		

		try {		
			
			disponibilidadService.registrarDisponibilidad(disponibilidad);				
			setSuccess(true);
			setMsg("Disponibilidad registrada con exito");
			
		} catch (Exception e) {
			e.printStackTrace();
			setSuccess(false);
			setMsg("Error al registrar disponibilidad");

		}
		
		// this.listarDisponibilidades();

		return SUCCESS;
	}
	
	
	public String listarTodo() throws Exception{
		
		
     	try {			
				disponibilidades = disponibilidadService.listarDisponibilidades();		
				setSuccess(true);
				
			} catch (Exception e) {

				e.printStackTrace();				
				setSuccess(false);				
			}
	
			return SUCCESS;
	}
	
	
	public String listarDisponibilidades() throws Exception{
		
		
     	try {
		
				disponibilidades = disponibilidadService.listarDisponibilidadesE();	
		
				setSuccess(true);
				
			} catch (Exception e) {

				e.printStackTrace();				
				setSuccess(false);				
			}
	
			return SUCCESS;
	}
	
	public String obtenerDisponibilidadPorCodigo() throws Exception{
		
		disponibilidad = disponibilidadService.obtenerDisponibilidadPorCodigo(id);
		this.listarEmpresas();
		//this.buscarChoferesPorCodigo();
		
		
		return SUCCESS;
	}
	
	public String actualizarDisponibilidad() throws Exception{
		
		disponibilidad = new DisponibilidadBean();
		disponibilidad.setCodigo(Integer.parseInt(this.request.getParameter("codigo")));
		disponibilidad.setEstado(this.request.getParameter("estado"));
		
		try {
			
			disponibilidadService.actualizarDisponibilidad(disponibilidad);
	
			setSuccess(true);
			setMsg("Disponibilidad actualizada con exito");
	
		} catch (Exception e) {
			e.printStackTrace();			
			setSuccess(false);
			setMsg("Error al actualizar disponibilidad");
			// TODO: handle exception
		}
				
	//	this.listarDisponibilidades();
		return SUCCESS;
	}
	
	public String eliminarDisponibilidad() throws Exception{
		
		disponibilidadService.eliminarDisponibilidad(id);
		this.listarDisponibilidades();
		
		
		return SUCCESS;
	}
	
	public String obtenerDisponibilidadPorEmpresa() throws Exception{
		
		disponibilidades = disponibilidadService.obtenerDisponibilidadPorEmpresa(empresa.getCodigo());
		this.listarEmpresas();
		
		
		return SUCCESS;
	}
	
		
	public int getId() {
		return id;
	}


	public void setId(int id) {
		this.id = id;
	}


	public List<DisponibilidadBean> getDisponibilidades() {
		return disponibilidades;
	}


	public void setDisponibilidades(List<DisponibilidadBean> disponibilidades) {
		this.disponibilidades = disponibilidades;
	}


	public DisponibilidadBean getDisponibilidad() {
		return disponibilidad;
	}


	public void setDisponibilidad(DisponibilidadBean disponibilidad) {
		this.disponibilidad = disponibilidad;
	}


	public EmpresaBean getEmpresa() {
		return empresa;
	}


	public void setEmpresa(EmpresaBean empresa) {
		this.empresa = empresa;
	}


	public List<ChoferBean> getChoferes() {
		return choferes;
	}


	public void setChoferes(List<ChoferBean> choferes) {
		this.choferes = choferes;
	}


	public List<EmpresaBean> getEmpresas() {
		return empresas;
	}

	public void setEmpresas(List<EmpresaBean> empresas) {
		this.empresas = empresas;
	}


	public ChoferBean getChofer() {
		return chofer;
	}


	public void setChofer(ChoferBean chofer) {
		this.chofer = chofer;
	}
	
	public boolean isSuccess() {
		return success;
	}
	
	public void setSuccess(boolean success) {
		this.success = success;
	}
	
	public String getMsg() {
		return msg;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}

	public ChoferBean getChofer2() {
		return chofer2;
	}

	public void setChofer2(ChoferBean chofer2) {
		this.chofer2 = chofer2;
	}

}
